/*
 * @lc app=leetcode.cn id=91 lang=javascript
 *
 * [91] 解码方法
 */

// @lc code=start
/**
 * @param {string} s
 * @return {number}
 */
var checkOne = function (s) {
  return s !== '0';
}

var checkTwo = function (s) {
  return +s <= 26 && s[0] !== '0';
}
var numDecodings = function (s) {
  if (s.length === 1) return s === '0' ? 0 : 1;
  const arr = Array(s.length).fill(0);
  arr[-1] = 1;
  arr[0] = checkOne(s[0]) ? 1 : 0;
  for (let i = 1; i < s.length; i++) {
    if (checkTwo(s.slice(i - 1, i + 1))) {
      arr[i] += arr[i - 2];
    }
    if (checkOne(s[i])) {
      arr[i] += arr[i - 1];
    }
  }
  return arr[s.length - 1];
};
// @lc code=end
